<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Модуль числа |a| без условных операций]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=11222</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11222&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Модуль числа |a| без условных операций».]]></description>
		<lastBuildDate>Mon, 08 Jun 2020 13:28:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=140073#p140073</link>
			<description><![CDATA[<p>Вариант без поразрядных операций:<br /></p><div class="codebox"><pre><code>@ echo off
setlocal enabledelayedexpansion

call :abs &quot;%1&quot;
echo abs(%1) = %errorlevel%

exit /b

:abs
:: Модуль числа
  setlocal
  set /a &quot;abs=(%1)&quot;
endlocal &amp; exit /b %abs:-=%</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Mon, 08 Jun 2020 13:28:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=140073#p140073</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103181#p103181</link>
			<description><![CDATA[<p><strong>torus</strong>, для отрицательных чисел ответ будет отличаться на 1.</p><p>Кроме того, нежелательно вхождение %1 в SET/A без скобок, если допустить, что аргумент может быть не только числом но и выражением;<br />а т.к. в CMD выражения C-подобны, т.е. в общем случае могут содержать присваивания, то нежелательно не однократное вхождение.</p><p>Использованное мной выражение вида </p><div class="codebox"><pre><code>x &gt;&gt; -1</code></pre></div><p> имеет то же предназначение, что и </p><div class="codebox"><pre><code>x &gt;&gt; 32</code></pre></div><p>, т.е. заполнение числа знаковым битом, но не привязано к определённой разрядности. Это пригодно не только для CMD, но и для других языков (JavaScript, AutoHotkey, PHP…).</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Thu, 28 Apr 2016 21:49:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103181#p103181</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=103179#p103179</link>
			<description><![CDATA[<div class="codebox"><pre><code>set /a &quot;abs=%1^(%1&gt;&gt;32)&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (torus)]]></author>
			<pubDate>Thu, 28 Apr 2016 14:21:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=103179#p103179</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100528#p100528</link>
			<description><![CDATA[<div class="codebox"><pre><code>set /a &quot;abs = (%~1), abs *= (abs &gt;&gt; -1 &lt;&lt; 1) + 1&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 19 Jan 2016 19:20:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100528#p100528</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100401#p100401</link>
			<description><![CDATA[<p>Добавил сюда скобочек:<br /></p><div class="codebox"><pre><code>set /a abs=&quot;(%1&gt;&gt;31)*%1+^!(%1&gt;&gt;31)*%1&quot;</code></pre></div><p>Теперь можно считать модуль от выражения, например:</p><div class="codebox"><pre><code>call :abs 3-8</code></pre></div><p>Полный код в первом сообщении</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sun, 17 Jan 2016 09:22:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100401#p100401</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100353#p100353</link>
			<description><![CDATA[<p>Ох, простите. Был вечер трудного для. Спутал вычисление модуля числа с делением по модулю.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 15 Jan 2016 05:35:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100353#p100353</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100352#p100352</link>
			<description><![CDATA[<p><strong>Rumata</strong>, это что?</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Thu, 14 Jan 2016 22:22:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100352#p100352</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100350#p100350</link>
			<description><![CDATA[<div class="codebox"><pre><code>set /a &quot;x=8 % 3&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 14 Jan 2016 19:42:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100350#p100350</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Модуль числа |a| без условных операций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=100349#p100349</link>
			<description><![CDATA[<p>Написал функцию для нахождения модуля числа без использования условных операций. Вот:</p><div class="codebox"><pre><code>@ echo off
setlocal enabledelayedexpansion

set /p a=Enter Integer: 
call :abs %a%
echo abs(%a%) = %errorlevel%

exit /b

:abs
:: Модуль числа
  setlocal
  set /a abs=&quot;((%1)&gt;&gt;31)*(%1)+^!((%1)&gt;&gt;31)*(%1)&quot;
endlocal &amp; exit /b %abs%</code></pre></div><p>Вариант без поразрядных операций:<br /></p><div class="codebox"><pre><code>@ echo off
setlocal enabledelayedexpansion

call :abs &quot;%1&quot;
echo abs(%1) = %errorlevel%

exit /b

:abs
:: Модуль числа
  setlocal
  set /a &quot;abs=(%1)&quot;
endlocal &amp; exit /b %abs:-=%</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Thu, 14 Jan 2016 19:01:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=100349#p100349</guid>
		</item>
	</channel>
</rss>
