C位级运算基础

简介: 无符号数 有符号数,有符号数的最常见的表示方法之一就算补码 补码的 最高有效位是符号位  正数的补码是本身,负数的补码是本身值每位求反最后加1 二进制的&与(都为真时为真) |或 (一个为真时为真)^异或(有一个为真,但两个不相同时为真) ~取反(真时假,假时真) -3 的16 进制  首先原码...
+关注继续查看

无符号数

有符号数,有符号数的最常见的表示方法之一就算补码

补码的 最高有效位是符号位 

正数的补码是本身,负数的补码是本身值每位求反最后加1

二进制的&与(都为真时为真) |或 (一个为真时为真)^异或(有一个为真,但两个不相同时为真) ~取反(真时假,假时真)


-3 的16 进制  首先原码为0011,假如是正数补码等于原码, 负数的求补码,首先计算|-3|的原码,然后再计算反码(就是按二进制位取反),再在反码的基础上加1

 

正数补码 是本身 ,负数补码是绝对值按位取反码再加1;豁然明朗,

再次总结下  无符号表示,有符号表示(一般最通常用的是补码,或是反码)


w位无符号 取值范围0 ~ 2(w - 1)    1111  8 4 2 1 = 15    2(w) - 1

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 192 + 56 + 7 = 192 + 63 = 255 = 2(8) - 1 = 16 * 16 = 256 - 1 = 255 


w位 无符号取值范围 2(w) - 1 


w位 有符号取值范围-2(w - 1) ~ 2(w -1) - 1

w = 8

-2(8-1) ~ 2(8-1) - 1 = -2(7) ~ 2(7) - 1  = -128 ~ (128 - 1) = 128 ~ 127


补码,反码 

有符号才反码、补码,反码 + 1 = 补码

有符号的 补码是先通过绝对值的原码 取反再 加 1

再加深下对二进制移位规则的回顾,左移x << k 丢弃最高的k个有效位,在右侧尾部补充k个0

右移x >> k 逻辑移时 在左侧补k个0

算符移位时在左侧补k个移位数的最高有效位.



目录
相关文章
|
12天前
|
数据采集 数据挖掘 索引
pandas数据分析之数据运算(逻辑运算、算术运算、统计运算、自定义运算)
数据分析离不开数据运算,在介绍完pandas的数据加载、排序和排名、数据清洗之后,本文通过实例来介绍pandas的常用数据运算,包括逻辑运算、算术运算、统计运算及自定义运算。
17 0
|
1月前
|
人工智能 测试技术
MoonLight的运算问题
MoonLight的运算问题
18 0
|
10月前
|
开发者
自操作运算| 学习笔记
快速学习自操作运算。
41 0
|
10月前
|
PHP 开发者
比较运算| 学习笔记
快速学习比较运算。
82 0
比较运算| 学习笔记
|
11月前
|
NoSQL MongoDB 数据库
范围运算|学习笔记
快速学习范围运算
33 0
|
11月前
&运算说明
&运算说明
35 0
|
存储 编译器 C语言
有符号数与无符号数之间运算问题探究
有符号数与无符号数之间运算问题探究
315 0
有符号数与无符号数之间运算问题探究
|
JavaScript 开发者
比较运算|学习笔记
快速学习 比较运算
|
数据挖掘 API 开发者
统计运算与自定义运算| 学习笔记
快速学习统计运算与自定义运算
|
C# 存储
c#位运算基本概念与计算过程
c#位运算基本概念与计算过程前言一些非常基础的东西,在实际工作中没有用到、很少用到。一旦遇到,又不知所云。最近遇到一个问题,把一个int16(short) 、两个bool变量整合成一个int32(int),当听到这个要求时,我第一反应是不是需求弄错了,后来才发现是自己才疏学浅,这里就需要位运算相关的概念。
1366 0
推荐文章
更多