{"id":3659,"date":"2013-12-24T17:05:01","date_gmt":"2013-12-24T08:05:01","guid":{"rendered":"http:\/\/www.techscore.com\/blog\/?p=3659"},"modified":"2018-11-14T16:33:53","modified_gmt":"2018-11-14T07:33:53","slug":"%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%83%95%e3%83%ad%e3%83%bc%e3%81%a8%e3%82%b7%e3%83%95%e3%83%88%e6%bc%94%e7%ae%97","status":"publish","type":"post","link":"https:\/\/www.techscore.com\/blog\/2013\/12\/24\/%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%83%95%e3%83%ad%e3%83%bc%e3%81%a8%e3%82%b7%e3%83%95%e3%83%88%e6%bc%94%e7%ae%97\/","title":{"rendered":"\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3068\u30b7\u30d5\u30c8\u6f14\u7b97"},"content":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f \u6751\u4e0a\u3067\u3059\u3002<\/p>\n<p>\u5148\u65e5Java\u3067\u66f8\u304b\u308c\u305f\u30ed\u30b8\u30c3\u30af\u3092Ruby\u306b\u79fb\u690d\u3057\u3088\u3046\u3068\u3057\u3066\u30cf\u30de\u3063\u305f\u5185\u5bb9\u3067\u3059\u3002<\/p>\n<h2>\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc<\/h2>\n<p>\u554f\u984c\u3067\u3059\u3002\u4e0b\u8a18\u306e\u5b9f\u884c\u7d50\u679c\u306f\u306a\u3093\u3067\u3057\u3087\u3046\uff1f<\/p>\n<pre class=\"lang:ruby decode:true\">2147483647 + 1<\/pre>\n<p>Java\u3068Ruby\u3067\u306f\u7d50\u679c\u304c\u7570\u306a\u308a\u307e\u3059\u3002<\/p>\n<h3>Java<\/h3>\n<pre class=\"lang:java decode:true\">2147483647 + 1\r\n\/\/ =&gt; -2147483648<\/pre>\n<h3>Ruby<\/h3>\n<pre class=\"lang:ruby decode:true\">2147483647 + 1\r\n# =&gt; 2147483648<\/pre>\n<p>\u304a\u6c17\u3065\u304d\u306e\u901a\u308aJava\u306f\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u8d77\u3053\u3057\u307e\u3059\u3002<br \/>\nRuby\u306e\u5834\u5408\u306f\u578b\u5909\u63db\u304c\u884c\u308f\u308c\u3001\u81ea\u52d5\u3067\u3088\u308a\u5927\u304d\u3044\u578b\u306b\u5909\u63db\u3055\u308c\u307e\u3059\u3002<br \/>\n(\u5b9f\u969b\u300c2147483648\u300d\u3050\u3089\u3044\u3067\u306f\u578b\u5909\u63db\u304c\u884c\u308f\u308c\u307e\u305b\u3093\u304c)<\/p>\n<p>\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u610f\u56f3\u7684\u306b\u8d77\u3053\u3057\u3066\u3044\u308b\u3088\u3046\u306a\u30ed\u30b8\u30c3\u30af\u3067\u306f\u3053\u306e\u90e8\u5206\u3067\u30cf\u30de\u308a\u307e\u3059\u3002<\/p>\n<h2>\u30b7\u30d5\u30c8\u6f14\u7b97<\/h2>\n<p>\u7d9a\u304d\u307e\u3057\u3066\u30b7\u30d5\u30c8\u6f14\u7b97\u3067\u3059\u3002<br \/>\n\u3053\u308c\u3082\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3092\u8d77\u3053\u3059\u5834\u5408\u306fJava\u3068\u7d50\u679c\u304c\u7570\u306a\u308a\u307e\u3059\u304c\u3001\u3082\u3046\u4e00\u3064\u7570\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<h3>\u53f3\u8ad6\u7406\u30b7\u30d5\u30c8<\/h3>\n<p>Java\u306b\u306f\u53f3\u30b7\u30d5\u30c8\u3059\u308b\u5834\u5408\u3001\u7b97\u8853\u30b7\u30d5\u30c8\u3068\u8ad6\u7406\u30b7\u30d5\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"lang:java decode:true\">\/\/ \u7b97\u8853\u30b7\u30d5\u30c8\r\n-10 &gt;&gt; 1\r\n\/\/ \u21d2 -5\r\n\r\n\/\/ \u8ad6\u7406\u30b7\u30d5\u30c8\r\n-10 &gt;&gt;&gt; 1\r\n\/\/ \u21d2 2147483643<\/pre>\n<p>\u7c21\u5358\u306b\u8a00\u3046\u3068\u7b26\u53f7\u30d3\u30c3\u30c8\u3092\u30b7\u30d5\u30c8\u5bfe\u8c61\u306b\u3059\u308b\u304b\u3057\u306a\u3044\u304b\u306e\u9055\u3044\u3067\u3059\u306d\u3002<\/p>\n<h3>Ruby\u306b\u306f\u53f3\u8ad6\u7406\u30b7\u30d5\u30c8(&gt;&gt;&gt;\u6f14\u7b97\u5b50)\u304c\u306a\u3044\uff01\uff1f<\/h3>\n<p>Ruby\u306e\u5834\u5408<\/p>\n<pre class=\"lang:ruby decode:true\"># \u7b97\u8853\u30b7\u30d5\u30c8\r\n-10 &gt;&gt; 1\r\n# \u21d2 -5\r\n\r\n\/\/ \u8ad6\u7406\u30b7\u30d5\u30c8\r\n-10 &gt;&gt;&gt; 1\r\n# \u21d2 syntax error, unexpected '&gt;'<\/pre>\n<p>\u3068\u306a\u308a\u8ad6\u7406\u30b7\u30d5\u30c8\u304c\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u304a\u305d\u3089\u304f\u3001Java\u306e\u5834\u5408\u306f\u6700\u4e0a\u4f4dbit\u304c\u7b26\u53f7bit\u306b\u306a\u308b\u3093\u3067\u3001\u30b7\u30d5\u30c8\u5bfe\u8c61\u304c\u308f\u304b\u308a\u307e\u3059\u304c\u3001Ruby\u306e\u5834\u5408\u306f\u6700\u4e0a\u4f4dbit\u304c\u308f\u304b\u308a\u307e\u305b\u3093\u3002<br \/>\n\u305f\u3076\u3093\u578b\u3068\u3044\u3046\u6982\u5ff5\u304c\u306a\u3044\u3093\u3067\u3001\u6700\u4e0a\u4f4dbit\u304c32bit\u76ee\u306a\u306e\u304b\u300164bit\u76ee\u306a\u306e\u304c\u308f\u304b\u3089\u306a\u3044\u3093\u3067\u3057\u3087\u3046\u3002<\/p>\n<p>Java\u306e\u30b3\u30fc\u30c9\u3092\u79fb\u690d\u3059\u308b\u5834\u5408\u306f\u53f3\u8ad6\u7406\u30b7\u30d5\u30c8\u3082\u8981\u6ce8\u610f\u3067\u3059\u3002<\/p>\n<h2>\u3069\u3046\u5bfe\u5fdc\u3057\u305f\u304b\uff1f<\/h2>\n<p>\u7c21\u5358\u3067\u3059\u3002<br \/>\n\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u3055\u305b\u3066\u3057\u307e\u3048\u3070\u3044\u3044\u3002<br \/>\n\u30b7\u30d5\u30c8\u306e\u6642\u306f\u6700\u4e0a\u4f4dbit\u3092\u53cd\u8ee2\u3055\u305b\u3066\u3084\u308c\u3070\u30a4\u30a4\u3093\u3067\u3059\u3002<\/p>\n<h3>\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc<\/h3>\n<pre class=\"lang:ruby decode:true\">def overflow_int\r\n  range_max = 2147483647\r\n  range_min = -2147483648\r\n  range_size = range_max - range_min + 1 # -2147483648 - 2147483647 + 1\r\n\r\n  rest = num % range_size\r\n\r\n  rest &lt;= range_max ? rest : rest - range_size\r\nend<\/pre>\n<h3>\u53f3\u8ad6\u7406\u30b7\u30d5\u30c8<\/h3>\n<pre class=\"lang:ruby decode:true\">def logic_right_shift(num, bit, range=32)\r\n  (num + (num &gt; 0 ? 0 : 2 ** range)) &gt;&gt; bit\r\nend<\/pre>\n<p>\u304b\u306a\u308a\u7121\u7406\u77e2\u7406\u3067\u3059\u306d\u3002\u3002\u3002<br \/>\n\u3067\u3082\u3053\u3093\u306a\u611f\u3058\u3067Ruby\u3078\u306e\u79fb\u690d\u306f\u7121\u4e8b\u5b8c\u4e86\u3057\u307e\u3057\u305f\uff01\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f \u6751\u4e0a\u3067\u3059\u3002<\/p>\n<p>\u5148\u65e5Java\u3067\u66f8\u304b\u308c\u305f\u30ed\u30b8\u30c3\u30af\u3092Ruby\u306b\u79fb\u690d\u3057\u3088\u3046\u3068\u3057\u3066\u30cf\u30de\u3063\u305f\u5185\u5bb9\u3067\u3059\u3002<br \/>\n\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc<br \/>\n\u554f\u984c\u3067\u3059\u3002\u4e0b\u8a18\u306e\u5b9f\u884c\u7d50\u679c\u306f\u306a\u3093\u3067\u3057\u3087\u3046\uff1f<br \/>\n2147483647 + 1<br \/>\nJava\u3068Ruby\u3067\u306f\u7d50\u679c\u304c\u7570\u306a\u308a\u307e\u3059\u3002<br \/><a href=\"https:\/\/www.techscore.com\/blog\/2013\/12\/24\/%e3%82%aa%e3%83%bc%e3%83%90%e3%83%bc%e3%83%95%e3%83%ad%e3%83%bc%e3%81%a8%e3%82%b7%e3%83%95%e3%83%88%e6%bc%94%e7%ae%97\/\">\u7d9a\u304d\u3092\u8aad\u3080...<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[18],"tags":[57,24],"_links":{"self":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/3659"}],"collection":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/comments?post=3659"}],"version-history":[{"count":1,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/3659\/revisions"}],"predecessor-version":[{"id":17894,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/posts\/3659\/revisions\/17894"}],"wp:attachment":[{"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/media?parent=3659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/categories?post=3659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techscore.com\/blog\/wp-json\/wp\/v2\/tags?post=3659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}