计算机基础二进制补码与移位运算

最近学习C,感觉C确实比较接近底层,要多了解计算机基础,这一门语言就一定不能错过了,因为许多知识都从这里延伸出来。
言归正题,先说说机器数:

二进制数有正负之分,如N1=+0.101101,N2=-0.101101,则N1是个正数,N2是个负数。机器不能直接把符号“+”、“-”表示出来,为了能在计算机中表示正负数,必须引入符号位,即把正负符号也用1位二进制数码来表示。把符号位和数值位一起编码来表示相应的数的表示方法包括:原码、补码、反码、移码等。

机器数 用二进制数“0”或“1”来表示数的符号,“0”表示正号,“1”表示负号,且把符号位置于该数的最高数值位之前,这样表示的数称为机器数(或称机器码),即把符号位和数值位一起编码来表示的数就是机器数。

原码/补码/反码之间的关系:

原码 反码 补码.PNG

机器数:原码与补码
对于正数而言,二进制数的原码/反码/补码都是一样的
对于负数而言,其二进制数与原码一样,其反码则是其二进制数逐位反转(0转为1,1转为0)而成,其补码则是反码的基础上加1
其中对于原码/反码和补码而言,其最高位中0代表正数,1代表负数

表示规则.PNG

使用补码可使减法变加法(符号位参与运算)

补码运算.PNG

负数的原码和补码之间的转换

负数的原码=负数的补码-1 再取反

负数的原码=负数的补码取反再加1

更多的知识可以参考这篇文章:
http://share.onlinesjtu.com/mod/tab/view.PHP?id=173

位移运算

说到位移运算,就必须有与、或、非、异或这几个运算符,它们二进制运算中的运算符,以下时他们的规则:

&   与运算,有0为0,全1为1;

|   或运算,有1为1,全0为0;

!   非运算,非0则1,非1则0;

^   异或运算,相同为0,不同为1;

~ 二进制反码或按位取反运算符,把1变为0, 0变为1

& 与运算

就像规则一样,只有全部时1的时候得到的结果才为1。
示例:
(10010011)&(00111101)=(00010001)

| 或运算

当运算结果其中一个为1时,结果就为1,当然,都是1的时候也是1
示例:
(10010011)&(00111101)=(10111111)

^ 异或运算

当且仅当有一个1的时候才为1,也就是说只有1和0组合才为1
示例:
(10010011)&(00111101)=(10101110)

~ 取反运算符

将二进制逐位取反
示例:
~(10011010) = (01100101)

用法

了解这四个运算符很简单,但是对于初学者而言,更重要的是其用法,如果不知道怎么用,那么这道这些运算符也没什么用

& 运算符用法:掩码

与运算符通常用于掩码,指的是一些设置为开(1)或管(0)的为组合。
在实际运用中,最常见的掩码用法莫过于以下这种:

ch & 0xff

其中0xff的二进制形式为11111111,当一个数与上0xff,那么此数的最后8位将保存不变(&运算规则决定),而其他数均会为0,也就是说最终的值被改为1个8为字节,这种用法是取位的某一段。

第二种用法是让某些位或某一位为0,因为&运算的规则,只要给某些位上&上为0的数,那么这一位就会为0,如上面的示例(10010011)&(00111101)=(00010001)

| 运算符用法

使一个位或几个位为1,如x|0x01,这样不管x是什么数,其结果的最后一位都会为1。
把两个数拼起来,如0xFF00 | 0x00FF

~ 取反用法

想得到全部位为1的数,如~0

移位运算

移位运算分<<左移和>> 右移。

其中<<左移的结果将会乘以2的n次幂,其中左移末端位的值丢失时,用0补足

>>右移的结果将会除以2的n次幂,移出右末端位的值丢弃。unsigned类型,左侧填0;signed类型,左侧保持不变(保持符号),如10000000>>1 = 11000000
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 网站乱码问题我们会经常碰到,大多见于非英文的中文字符或其他字符乱码,而且,这类问题常常是因为编码方式问题,主要原因...
    波段顶底阅读 2,776评论 1 9
  • 一、概要 1、数据的表示:数制及其转换、原码、反码、补码、移码、浮点数、溢出、算...
    _Jason___阅读 3,049评论 0 5
  • 如果能回到过去 该怎么跟从前的自己解释 说自己是怎样走过这些年并如何变成现在的这个样子 肯定不受自己喜欢 会被抱怨...
    王夏天阅读 276评论 0 1
  • 童年的美好记忆,总是与当下的困苦、后悔、迟疑缠在一起,让我们变得复杂。
    周淡皮阅读 165评论 0 0